
#include<stdio.h>
#include<string.h>
#include "ebola.h" 
#include"personnel.h"
#include"patient1.h"




void saisir_modele(char modele[])
{ 
printf("\nveuillez saisir le modele a suivre\n : ");
scanf("%s",modele);
}



int test_existe(Parcours t[],int n, long int ide)
{
int i=0;


while(t[i].id!=ide && i<n)
i++;
  if(t[i].id==ide)
return i;
  else if(t[i].nombre_cap!=-1)
return -1;

}





int tester_capteur(char cap[])
{
int n1,n2,n3,n4,n5;


 n1=strcmp(cap,"B01");n2=strcmp(cap,"M01");n3=strcmp(cap,"Sout");n4=strcmp(cap,"Pout");
n5=strcmp(cap,"Ebola");
if(n1==0 && n2==0 && n3==0 && n4==0)
  return 0;
else if(n5==0)
 return -1;
else
return 1;
}





void determiner_parcours(char modele[],Parcours t[],char Events[],int*n)
{
int h,s,m,n1,n2;


char cap[50];
long int ide;



FILE *f;
f=fopen(Events,"r");
if(f!=NULL)
{
  while(fscanf(f,"%d:%d:%d  %ld  %s",&h,&m,&s,&ide,cap)!=EOF)
  {
        n1=test_existe( t,*n,ide);
	n2=tester_capteur(cap); 
if(n1==-1 && n2==1)
    {
    t[*n].id=ide;
    strcpy((t[*n].chemin),cap);
    (t[*n].nombre_cap)=(t[*n].nombre_cap)+1;
    *n=*n+1;

    }
    else if(n1==-1 && n2==-1)
     {
        t[*n].nombre_cap=-1;
        *n=*n+1;
    }
   else if(n1!=-1 && n2==1) 
	    {
	     strcat(t[n1].chemin,cap);
	     t[n1].nombre_cap=t[n1].nombre_cap+1;
           n1=n1+1;
            }
       
        
   }
}
else
printf("\n impossible d ouvrir le fichier Events");


fclose(f);
}


void afficher_parcours(Parcours t[],int n)
{ 
int i;
for(i=0;i<n;i++)
{
if((t[i].nombre_cap)!=-1)


printf("& l'identifiant %ld  a  fait le parcours  suivant %s\n: ",t[i].id, t[i].chemin);
}
}


void afficher_anomalie(Parcours t[],int n,char modele[])
{
int i;
char fper[50];
char fpat[50];
Personnel  p;
Patient pa;
char ch[50];char nom[50];char prenom[50]; long int identifiant;

for (i=0;i<n;i++){

	if(rechercher_personnel("fper",t[i].id)==1)
	{
         

            
	
		if((t[i].nombre_cap)==-1)
		{

		printf("\nle personnel qui a l'identifiant %ld est detecté  par ebola \n: ",t[i].id);
                 afficher_coordonnespersonnel("fper",t[i].id);

		}
		else if((t[i].nombre_cap) < 9)
		{
		printf("\nle personnel qui a l'identifiant %ld est detecté par parcours manquants\n: ",t[i].id);
                afficher_coordonnespersonnel("fper",t[i].id);

		}

		else
		{
		  strncpy(ch,t[i].chemin,27);

			if( strcmp(ch,modele)==0)
{
		
			 

				 printf ("\nle personnel qui a l'identifiant %ld a fait un parcours definis\n:",t[i].id);
                                 afficher_coordonnespersonnel("fper",t[i].id);
			       
			}
			  else
			{
			printf("\nle personnel qui a l'identifiant %ld  a fait un parcours non definis\n: ",t[i].id);
                        afficher_coordonnespersonnel("fper",t[i].id);


			}
}
}
	
			
	else if (rechercher_patient("fpat",t[i].id)==1)

	{
        afficher_coordonnespatient("fpat",t[i].id);

	printf ("\nle patient qui a l'identifiant %ld a depassé la zone d'isolation\n: ",t[i].id);
	}
	else 
	{
	printf("\n%ld est inconnu et a depassé la zone d'isolation\n: ",t[i].id);
	
}

}

}



void afficher_coordonnespersonnel(char fper[],long int ide )
{
FILE *f;
int i=1;
long int identifiant;
Personnel P;
f=fopen(fper,"rb");
if(f!=NULL)
{

while((fread(&P,sizeof(Personnel),1,f)!=0))
{ if (ide==P.identifiant)
{
printf("\n");


printf("\nNom : %s\nPrenom : %s\nprofession:\t%s\nAjoutée le: %d/%d/%d\n",P.nom,P.prenom,P.profession,P.jj,P.mm,P.aaaa);


i++;
}
}
}
else
printf("\nImpossible d'ouvrir le fichier de ce directeur");
fclose(f);
}    



void afficher_coordonnespatient(char fpat[],long int ide )
{
FILE *f;
int i=1;
long int identifiant;
Patient Pa;
f=fopen(fpat,"rb");
if(f!=NULL)
{

while((fread(&Pa,sizeof(Patient),1,f)!=0))
{ if (ide==Pa.identifiant)
{
printf("\n");


printf("\nNom : %s\nPrenom : %s\nAjoutée le: %d/%d/%d\n",Pa.nom,Pa.prenom,Pa.jj,Pa.mm,Pa.aaaa);
printf(" Le personnel numéro %d :",i);
printf("\nIdenfiant: %ld",Pa.identifiant);
i++;
}
}
}
else
printf("\nImpossible d'ouvrir le fichier de ce directeur");
fclose(f);
}    



